package com.sg.zwfw.Controller;


import com.alibaba.fastjson.JSONObject;
import com.sg.zwfw.entity.GatewayEntity;
import com.sg.zwfw.entity.User;
import com.sg.zwfw.httpServer.DemoHttpclient;
import com.sg.zwfw.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/zwfw")
public class ZwfwController {

    @Resource
    private UserService userService;

    @GetMapping("/getUserById")
    public JSONObject getUserById(@RequestParam String id) {
        JSONObject json = new JSONObject();
        if (StringUtils.isEmpty(id)) {
            List<User> list = this.list();
            json.put("code", 0);
            json.put("desc", "查询成功");
            json.put("data", list);
            return json;
        }
        User user = userService.getUserById(Integer.parseInt(id));
        if (user == null) {
            json.put("code", 0);
            json.put("data", null);
            return json;
        }
        List<User> infoList = new ArrayList<>(1);
        infoList.add(user);
        json.put("code", 0);
        json.put("desc", "查询成功");
        json.put("data", infoList);
        return json;
    }

    @PostMapping(value = "/addUser")
    public JSONObject addUser(@RequestBody User user) {
        boolean b = userService.addUser(user);
        JSONObject json = new JSONObject();
        if (b) {
            json.put("code", 0);
            json.put("desc", "新增成功");
            json.put("data", null);
            return json;
        }
        json.put("code", 1);
        json.put("desc", "新增失败");
        json.put("data", null);
        return json;
    }

    @GetMapping(value = "/list")
    public List<User> list() {
        return userService.list();
    }

    @PostMapping(value = "/updateUser")
    public JSONObject updateUser(@RequestBody User user) {
        boolean b = userService.updateByPrimaryKey(user);
        JSONObject json = new JSONObject();
        if (b) {
            json.put("code", 0);
            json.put("desc", "更新成功");
            json.put("data", null);
            return json;
        }
        json.put("code", 1);
        json.put("desc", "更新失败");
        json.put("data", null);
        return json;
    }

    @GetMapping(value = "/deleteUser")
    public JSONObject deleteUserById(@RequestParam String id) {

        boolean b = userService.deleteByPrimaryKey(Integer.parseInt(id));
        JSONObject json = new JSONObject();
        if (b) {
            json.put("code", 0);
            json.put("desc", "删除成功");
            json.put("data", null);
            return json;
        }
        json.put("code", 1);
        json.put("desc", "删除失败");
        json.put("data", null);
        return json;
    }

    @PostMapping(value = "/callApiGateay", consumes = "application/json")
    public String callApiGateay(@RequestBody GatewayEntity gatewayEntity) {
        DemoHttpclient httpclient = new DemoHttpclient();
        return httpclient.callApiGateway(gatewayEntity.getPaasId(), gatewayEntity.getPaasToken(), gatewayEntity.getApiPath(), gatewayEntity.getServerUrl());
    }


}
